When a software architect or a software developer joins a development team, he or she has to understand the basic organization of the physical artifacts that make up the software system whether the task is fixing bugs, modifying the system towards new business ventures, or modifying the system to accommodate a new technology platform. A logical model of a software system is sometimes constructed showing layers of logical elements. These diagrams represent part of what is often referred to as the “logical architecture” of the system.
Architecture diagrams are typically developed by meeting with other architects, developers and/or business people on the team, by referring to existing documentation, and by drawing free-form drawings on whiteboards and paper. Inaccurate diagrams frequently result because the participants have an incorrect or incomplete knowledge of the system, because documentation is incorrect, incomplete or outdated and because the views represented by the diagrams are abstract models of the underlying system. Moreover, even if correct and complete at some point in time, the diagrams developed in this way are likely to become incorrect or outdated as the system changes.